<!DOCTYPE html>
<html>
<head>
    <title>Bags - Build Your Own Relations</title>
    <link rel="stylesheet" type="text/css" href="site.css">
</head>
<body>

<div id="header">
  <h1>Bags - Build Your Own Relations</h1>
</div>

<div id="pic_space">
  <a href="source/bags/bags.html"><img src="images/screenshot.png"></a>
</div>

<div id="navbar">
  <h2>
      <a href="index.html">Home</a> |
      <a href="about.html" id="current">About</a> |
      <a href="download.html">Download</a>
  </h2>
</div>

<div id="contentwrap">
    <div id="content">

    <h2>About Bags</h2>

    <p>Over the past decade, Computer Science education researchers have built
    a number of drag-and-drop environments for teaching computer programming.
    Notable examples include Alice (CMU), Scratch (MIT), Greenfoot (Kent), and
    AppInventor (Google). Although each project has its own emphasis (e.g.,
    object oriented design, interaction with media, simulation and games, mobile
    development), they all focus on teaching introductory programming concepts.
    Students learn about instructions, decisions, loops, variables, operators,
    and so forth by manipulating "blocks" that represent these structures.
    This design has a number of pedagogical advantages, including simplifying
    the programming environment, encouraging self-directed learning, making the
    execution of programs visual, eliminating syntax error messages, and making
    data structures concrete.</p>

    <p>Bags is a new type of drag-and-drop environment suitable for teaching
    relational algebra. In contrast to current tools like Scratch and Alice
    that allow students to interact with computation, our approach enables
    students to explore and manipulate structured data. Students formulate
    database queries by combining blocks representing relational operations,
    including selection, projection, inner/outer join, grouping, aggregation,
    and sorting. Our approach allows students to evaluate ad hoc queries in
    real-time, giving them an interactive visualization of the data as they
    add or remove individual operations. Students are also able to experiment
    with different configurations of blocks and observe the corresponding query
    results.</p>

    <p><i>Why the name Bags?</i> In set theory, a "bag" is a set that may contain
    duplicate items. SQL and other database languages are based on bag semantics.</p>

    <h3>Release notes</h3>

    <p><i>Coming soon...</i></p>
    <ul>
        <li>Save/Load projects (import/export xml)</li>
    </ul>

    <p><i>Jan 22, 2015 - delta release</i></p>
    <ul>
        <li>Show the relational algebra expression</li>
        <li>Custom datasets (import your own csv)</li>
    </ul>

    <p>May 2, 2014 - gamma release</p>
    <ul>
        <li>Set operations (union/intersect/difference)</li>
        <li>Group-level aggregation (count, sum, etc.)</li>
        <li>Allow direct user input in most blocks</li>
    </ul>

    <p>Feb 28, 2014 - beta release</p>
    <ul>
        <li>Added vlds and extended palettes</li>
        <li>Sorting and duplicate elimination</li>
        <li>Limit block and "is null" blocks</li>
        <li>Grouping and aggregation blocks</li>
    </ul>

    <p>Nov 7, 2013 - alpha release</p>
    <ul>
        <li>Bags is released!</li>
    </ul>

    </div>
</div>

</body>
</html>
